package listnode;

import listnode.data.ListNode;

import java.util.ArrayList;
import java.util.List;


/**
 * 回文链表
 *
 * 先反转，再比对
 *
 * 复制到ArrayList，再比对
 *
 * 递归
 *
 * 用栈
 */

public class IsPalindrome {

    public boolean isPalindrome(ListNode head) {
        List<Integer> rev=new ArrayList<>();

        ListNode rl=head;
        while (rl!=null){
            rev.add(rl.val);
            rl=rl.next;
        }

        ListNode nor=head;
        for (int i = rev.size()-1; i >0; i--) {
            if (nor.val!=rev.get(i)){
                return false;
            }
            nor=nor.next;
        }

        return true;
    }

    public static void main(String[] args) {
        System.out.println("Hello and welcome!");

        IsPalindrome s=new IsPalindrome();

        System.out.println( s.isPalindrome(getData()));
    }


    public static ListNode getData() {
        // 创建值为 1 的节点
        ListNode node1 = new ListNode(1);
        // 创建值为 2 的节点
        ListNode node2 = new ListNode(2);
        // 将节点 1 的 next 指向节点 2
        node1.next = node2;

        // 打印链表的值
        ListNode current = node1;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }

        return node1;
    }
}
